In every image or video coding scheme, quantization is a significant step of compressing data by removing a certain amount of information in an image or a video. The quantization is usually performed by transforming data from space domain into frequency domain so that the data can be more efficiently compressed by removing information in a quantization process.
In most image or video coding schemes, the quantization process is controllable by a quantization parameter. Here, an amount of compression increases as the value of the quantization parameter rises, and a greater amount of information is lost. The opposite is true.
Moreover, in most image or video coding schemes, the quantization process and an inverse quantization process are controllable by a set of quantization scaling matrix values in addition to the quantization parameter (see PTL 1, for instance). Here, each of frequency coefficients in a two-dimensional transform block can be quantized by using both the quantization parameter and a value corresponding to a quantization scaling matrix. It is to be noted that a “matrix value” refers to a value of each of coefficients constituting a matrix (hereafter the same).
An example of the inverse quantization process can be expressed by the following equation.AbsCoeff[i][j]=abs(QuantizedCoeff[i][j])*LevelScale*ScalingMatrix[i][j]>>(QShift)
Here, LevelScale and QShift are controlled by the quantization parameter. Moreover, ScalingMatrix[i][j] represents quantization scaling matrix values.
In a video coding scheme such as ISO/IES14496-10 (MPEG-4AVC), a quantization scaling matrix can be included and coded in a sequence header or a picture header. Conventionally, quantization scaling matrix values are rearranged in a predetermined order, differences between previous and next quantization scaling matrix values are calculated, and the difference values are included and coded in the sequence header or the picture header.